home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / util / libs / MultiReq.lha / MultiReq / Anleitung / Library.dok next >
Text File  |  1992-11-12  |  17KB  |  584 lines

  1. ###############################################################################
  2. ##                                                                           ##
  3. ##      M     M            ll     tt     ii    RRRRR                         ##
  4. ##      MM   MM            ll     tt           RR  RR                        ##
  5. ##      MMM MMM   uu  uu   ll    ttttt   ii    RR  RR    eeee     qqqqq      ##
  6. ##      MMMMMMM   uu  uu   ll     tt     ii    RRRRR    ee  ee   qq  qq      ##
  7. ##      MM M MM   uu  uu   ll     tt     ii    RR RR    eeeeee   qq  qq      ##
  8. ##      MM   MM   uu  uu   ll     tt     ii    RR  RR   ee        qqqqq      ##
  9. ##      MM   MM    uuuuu    ll     ttt    ii   RR  RR    eeee        qq      ##
  10. ##                                                                   qq      ##
  11. ##                                                                           ##
  12. ###############################################################################
  13.  
  14.  
  15. MultiReq v1.20 © 11/1992 by Andreas Krebs (veröffentlicht am 12-Nov-92)
  16.  
  17.  
  18. Diese Datei enthält eine ausführliche Beschreibung aller Funktionen der
  19. "multireq.library". Die Funktionen werden in der Reihenfolge ihrer Offsets
  20. aufgelistet.
  21. Alle diese Funktionen verändern NUR die Register, die unter Ergebnisse
  22. aufgelistet aufgelistet sind und eventuel D0 als Rückgaberegister. Alle anderen
  23. Register werden nicht verändert, auch wenn sie zur Parameterübergabe benützt
  24. werden.
  25.  
  26.  
  27.  
  28. multireq.library/StrLen                                  multireq.library/StrLen
  29.  
  30. NAME
  31.   StrLen -- ermittelt die Länge eines Textstrings
  32.  
  33. SYNTAX
  34.   length = StrLen( str )
  35.   D0       -30     A0
  36.  
  37.   UWORD StrLen( UBYTE * )
  38.  
  39. FUNKTION
  40.   Diese Funktion ermittelt die Länge eines Textstrings, wobei die Länge
  41.   ohne das abschließende Nullbyte gezählt wird.
  42.  
  43. EINGABEN
  44.   str - Zeiger auf einen nullterminierten String
  45.  
  46. ERGEBNISSE
  47.   length - Länge des Strings in Bytes
  48.   A0     - Adresse des abschließenden Nullbytes
  49.  
  50. SIEHE AUCH
  51.   StrCpy, StrCmp, StrIns, UpperCase, TestPattern
  52.  
  53.  
  54.  
  55. multireq.library/StrCpy                                  multireq.library/StrCpy
  56.  
  57. NAME
  58.   StrCpy -- kopiert den einen Textstring
  59.  
  60. SYNTAX
  61.   StrCpy( src, dest )
  62.   -36     A0   A1
  63.  
  64.   void StrCpy( UBYTE *, UBYTE * )
  65.  
  66. FUNKTION
  67.   Diese Funktion kopiert den Textstring src in den Textstring dest, wobei der
  68.   Kopiervorgang beendet wird, wenn das abschließende Nullbyte erreicht ist.
  69.  
  70. EINGABEN
  71.   src  - Zeiger auf den nullterminierten Quellenstring
  72.   dest - Zeiger auf einen Adressbereich für den Zielstring
  73.  
  74. ERGEBNISSE
  75.   A0 - Adresse des abschließenden Nullbytes des Quellenstrings
  76.   A1 - Adresse des abschließenden Nullbytes des Zielstrings
  77.  
  78. SIEHE AUCH
  79.   StrLen, StrCmp, StrIns, UpperCase, TestPattern
  80.  
  81.  
  82.  
  83. multireq.library/StrCmp                                  multireq.library/StrCmp
  84.  
  85. NAME
  86.   StrCmp -- vergleicht zwei Textstrings
  87.  
  88. SYNTAX
  89.   dif = StrCmp( str1, str2 )
  90.   D0    -42     A0    A1
  91.  
  92.   WORD StrCmp( UBYTE *, UBYTE * )
  93.  
  94. FUNKTION
  95.   Diese Funktion vergleicht zwei Textstrings miteinander, wobei nicht zwischen
  96.   Groß- und Kleinschreibung unterschieden ist.
  97.   Wenn dif < 0 ist, ist String str1 "kleiner" als String str2, d.h. der ASCII-
  98.   code von str1 ist niedriger als der von str2.
  99.   Wenn dif = 0 ist, sind str1 und str2 identisch.
  100.   Wenn dif > 0 ist, ist str1 "größer" als str2.
  101.  
  102. EINGABEN
  103.   str1 - Zeiger auf den ersten nullterminierten String
  104.   str2 - Zeiger auf den zweiten nullterminierten String
  105.  
  106. ERGEBNISSE
  107.   dif - Unterschied zwischen str1 und str2
  108.   A0  - Adresse des unterschiedlichen Zeichens in str1
  109.   A1  - Adresse des unterschiedlichen Zeichens in str2
  110.  
  111. SIEHE AUCH
  112.   StrLen, StrCpy, StrIns, UpperCase, TestPattern
  113.  
  114.  
  115.  
  116. multireq.library/StrIns                                  multireq.library/StrIns
  117.  
  118. NAME
  119.   StrIns -- fügt einen TextString in einen anderen ein
  120.  
  121. SYNTAX
  122.   StrIns( src, dest )
  123.   -48     A0   A1
  124.  
  125.   void StrIns( UBYTE *, UBYTE * )
  126.  
  127. FUNKTION
  128.   Diese Funktion fügt einen Textstring in einen anderen ein, dazu wird zunächst
  129.   der Zielstring dest um StrLen( src ) verschoben und anschließend wird src in
  130.   die entstandene Lücke eingefügt.
  131.  
  132. EINGABEN
  133.   src  - Zeiger auf den einzufügenden String
  134.   dest - Zeiger auf die Position, an der der String eingefügt werden soll
  135.  
  136. ERGEBNISSE
  137.  
  138. SIEHE AUCH
  139.   StrLen, StrCpy, StrCmp, UpperCase, TestPattern
  140.  
  141.  
  142.  
  143. multireq.library/UpperCase                            multireq.library/UpperCase
  144.  
  145. NAME
  146.   UpperCase -- wandelt einen Buchstaben in Großbuchstaben um
  147.  
  148. SYNTAX
  149.   character = Uppercase( character )
  150.   D0          -54        D0
  151.  
  152.   UBYTE UpperCase( UBYTE )
  153.  
  154. FUNKTION
  155.   Diese Funktion wandelt das angegeben Zeichen in einen Großbuchstaben um,
  156.   sofern es sich um einen Buchstaben handelt. Es werden auch Sonderzeichen wie
  157.   Umlaute berücksichtigt.
  158.  
  159. EINGABEN
  160.   character - der umzuwandelnte Buchstabe
  161.  
  162. ERGEBNISSE
  163.   character - der entsprechende Großbuchstabe
  164.  
  165. SIEHE AUCH
  166.   StrLen, StrCpy, StrCmp, StrIns, TestPattern
  167.  
  168.  
  169.  
  170. multireq.library/TestPattern                        multireq.library/TestPattern
  171.  
  172. NAME
  173.   TestPattern -- überprüft, ob ein String einem bestimmten Muster entspricht
  174.  
  175. SYNTAX
  176.   result = TestPattern( wild, str )
  177.   D0       -60          A0    A1
  178.  
  179.   BOOL TestPattern( UBYTE *, UBYTE * )
  180.  
  181. FUNKTION
  182.   Diese Funktion überprüft, ob der Textstring str, dem durch den Musterstring
  183.   wild definierten Muster entspricht, wobei das Zeichen '*' für einen beliebig
  184.   langen Teilstring steht und '|' zwei Muster voneinander trennt.
  185.   Bei der Überprüfung wird nicht zwischen Groß- und Kleinschreibung unter-
  186.   schieden, weshalb z.B. "a*" identisch ist mit "A*".
  187.  
  188. EINGABEN
  189.   wild - Zeiger auf einen String, der das Muster enthält
  190.   str  - Zeiger auf den zu überprüfenden String
  191.  
  192. ERGEBNISSE
  193.   result - TRUE (1), wenn der String dem Muster entspricht, oder FALSE (0) sonst
  194.  
  195. BEISPIELE
  196.   TestPattern( "*.c|*.h", str )   - ist str ein C Source- or Include-File ?
  197.   TestPattern( "*.*|*-*", str )   - enthält str ein '.'- oder '-'-Zeichen ?
  198.   TestPattern( "*", str )         - immer TRUE, da jeder String diesem Muster
  199.                                     entspricht
  200.  
  201. SIEHE AUCH
  202.   StrLen, StrCpy, StrCmp, StrIns, UpperCase
  203.  
  204.  
  205.  
  206. multireq.library/DelPort                                multireq.library/DelPort
  207.  
  208. NAME
  209.   DelPort -- löscht einen Message Port
  210.  
  211. SYNTAX
  212.   DelPort( port )
  213.   -66      A1
  214.  
  215.   void DelPort( struct MsgPort * )
  216.  
  217. FUNKTION
  218.   Diese Funktion löscht einen Message Port, dazu wird dieser aus der Betriebs-
  219.   systemliste der Message Ports entfernt und anschließend wird der belegte
  220.   Speicher wieder freigegeben.
  221.  
  222. EINGABEN
  223.   port - Zeiger auf die MsgPort-Struktur des Message Ports
  224.  
  225. ERGEBNISSE
  226.  
  227. BEMERKUNGEN
  228.   Diese Funktion ist identisch mit der DeletePort-Funktion der Linkerlibrary
  229.   amiga.lib.
  230.  
  231. SIEHE AUCH
  232.   CrtPort
  233.  
  234.  
  235.  
  236. multireq.library/CrtPort                                multireq.library/CrtPort
  237.  
  238. NAME
  239.   CrtPort -- erzeugt einen Message Port
  240.  
  241. SYNTAX
  242.   port = CrtPort( name, pri )
  243.   D0     -72      A0    D0
  244.  
  245.   struct MsgPort *CrtPort( UBYTE *, UWORD )
  246.  
  247. FUNKTION
  248.   Diese Funktion erzeugt einen Message Port mit dem angegebenen Namen und der
  249.   ausgewählten Priorität, wobei der Benötigte Speicher reserviert wird. Wenn der
  250.   Message Port erzeugt ist, wird er automatisch in die Betriebssystemliste der
  251.   Message Ports eingefügt.
  252.  
  253. EINGABEN
  254.   name - Zeiger auf einen nullterminierten String mit dem Namen des Ports oder
  255.          0 für keinen Namen
  256.   pri  - Priorität, die der Message Port haben soll
  257.  
  258. ERGEBNISSE
  259.   port - Zeiger auf die MsgPort-Struktur des Message Ports oder 0, wenn ein
  260.          Fehler aufgetretten ist
  261.  
  262. BEMERKUNGEN
  263.   Diese Funktion ist identisch mit der CreatePort-Funktion der Linkerlibrary
  264.   amiga.lib.
  265.  
  266. SIEHE AUCH
  267.   DelPort
  268.  
  269.  
  270.  
  271. multireq.library/GetCurrentPath                  multireq.library/GetCurrentPath
  272.  
  273. NAME
  274.   GetCurrentPath -- ermittelt Namen und Pfad des aktuellen Verzeichnisses
  275.  
  276. SYNTAX
  277.   GetCurrentPath( bufff )
  278.   -78             A0
  279.  
  280.   void GetCurrentPath( UBYTE * )
  281.  
  282. FUNKTION
  283.   Diese Funktion ermittelt des Namen und den Pfad des aktuellen Verzeichnisses
  284.   und schreibt diesen in den durch buff angegeben Puffer.
  285.  
  286. EINGABEN
  287.   buff - Zeiger auf einen Puffer in den der Namen eingetragen wird
  288.  
  289. ERGEBNISSE
  290.  
  291.  
  292.  
  293. multireq.library/DrawBox                                multireq.library/DrawBox
  294.  
  295. NAME
  296.   DrawBox -- malt ein Rechteck mit 3D-Effekt
  297.  
  298. SYNTAX
  299.   DrawBox( rp, x1, y1, x2, y2, col1, col2 )
  300.   -84      A1  D0  D1  D2  D3  D4    D5
  301.  
  302.   void DrawBox( struct RastPort *, UWORD, UWORD, UWORD, UWORD, UWORD, UWORD )
  303.  
  304. FUNKTION
  305.   Diese Funktion zeichnet ein Rechteck mit 3D-Effekt in der angegebenen Größe, 
  306.   wobei der linke und obene Rand in der Farbe col1 und der rechte und untere
  307.   Rand in der Farbe col2 gezeichnet wird.
  308.  
  309. EINGABEN
  310.   rp   - Zeiger auf den RastPort in dem gezeichnet werden soll
  311.   x1   - x-Position der linken oberen Ecke
  312.   y1   - y-Position der linken oberen Ecke
  313.   x2   - x-Position der rechten unteren Ecke
  314.   y2   - y-Position der rechten unteren Ecke
  315.   col1 - Farbe des linken und oberen Rands
  316.   col2 - Farbe des rechten und unteren Rands
  317.  
  318. ERGEBNISSE
  319.  
  320. BEMERKUNGEN
  321.   Es muß unbedingt sichergestellt werden, daß x1<x2 und y1<y2 sind, da es sonst
  322.   zu Abstürzen kommen kann.
  323.  
  324. SIEHE AUCH
  325.   DrawFilledBox
  326.  
  327.  
  328.  
  329. multireq.library/DrawFilledBox                    multireq.library/DrawFilledBox
  330.  
  331. NAME
  332.   DrawFilledBox -- malt ein gefülltes Rechteck mit 3D-Effekt
  333.  
  334. SYNTAX
  335.   DrawFilledBox( rp, x1, y1, x2, y2, col1, col2, fillcol )
  336.   -90            A1  D0  D1  D2  D3  D4    D5    D6
  337.  
  338.   void DrawFilledBox( struct RastPort *, UWORD, UWORD, UWORD, UWORD, UWORD,
  339.                       UWORD, UWORD )
  340.  
  341. FUNKTION
  342.   Diese Funktion zeichnet ein gefülltes Rechteck mit 3D-Effekt in der
  343.   angegebenen Größe. Dazu wird zuerst das Innere des Rechtecks in der Farbe
  344.   fillcol gefüllt und anschließend der Rand mit DrawBox gezeichnet.
  345.  
  346. EINGABEN
  347.   rp      - Zeiger auf den RastPort in dem gezeichnet werden soll
  348.   x1      - x-Position der linken oberen Ecke
  349.   y1      - y-Position der linken oberen Ecke
  350.   x2      - x-Position der rechten unteren Ecke
  351.   y2      - y-Position der rechten unteren Ecke
  352.   col1    - Farbe des linken und oberen Rands
  353.   col2    - Farbe des rechten und unteren Rands
  354.   fillcol - Farbe mit der das Innere des Rechtecks gefüllt werden soll
  355.  
  356. ERGEBNISSE
  357.  
  358. BEMERKUNGEN
  359.   Es muß unbedingt sichergestellt werden, daß x1<x2 und y1<y2 sind, da es sonst
  360.   zu Abstürzen kommen kann.
  361.  
  362. SIEHE AUCH
  363.   DrawBox
  364.  
  365.  
  366.  
  367. multireq.library/DrawTexts                            multireq.library/DrawTexts
  368.  
  369. NAME
  370.   DrawTexts -- gibt mehere Text der gleichen Art aus
  371.  
  372. SYNTAX
  373.   DrawTexts( rp, textlist)
  374.   -96        A1  A0
  375.  
  376.   void DrawTexts( struct RastPort *, struct MRText * )
  377.  
  378. FUNKTION
  379.   Diese Funktion gibt mehere Texte aus, wobei die Texte von der gleichen Art
  380.   sein müssen, d.h. dieselbe Schriftart, Schriftgröße, Zeichenmodus und
  381.   Hintergrundfarbe haben müssen, die vor dem Zeichnen von Hand gesetzt werden
  382.   muß.
  383.  
  384. EINGABEN
  385.   rp       - Zeiger auf den RastPort in dem gezeichnet werden soll
  386.   textlist - Zeiger auf ein Array mit MRText-Strukturen und einem Eintag mit dem
  387.              Wert -1 als letzten Eintrag
  388.  
  389. ERGEBNISSE
  390.  
  391. BEISPIELE
  392.  
  393.   static struct MRText MyTexts[]=
  394.   {
  395.     { 10, 15,  2,  6, (UBYTE *)"Text 1" },    /* x, y, pen, len, text */
  396.     { 10, 30,  1,  6, (UBYTE *)"Text 2" },
  397.     { -1, -1, -1, -1, (UBYTE *)-1 }           /* last text */
  398.   };
  399.  
  400.   /* */
  401.   DrawTexts(rp, MyTexts);
  402.   /* */
  403.  
  404.  
  405.  
  406. multireq.library/DrawWinBorder                    multireq.library/DrawWinBorder
  407.  
  408. NAME
  409.   DrawWinBorder -- zeichnet einen 3D-Rand für ein Fenster
  410.  
  411. SYNTAX
  412.   DrawWinBorder( win, title )
  413.   -102           A0   A1
  414.  
  415.   void DrawWinBorder( struct Window *, UBYTE * )
  416.  
  417. FUNKTION
  418.   Diese Funktion zeichnet einen 3D-Rand für ein Fenster nach Art der Workbench
  419.   2.0, wobei der obere Rand breiter ist als die übrigen und den Fenstertitel
  420.   enthält.
  421.   Diese Funktion sollte nur verwendet werden, wenn das Fenster vom Typ
  422.   BORDERLESS ist, da es sonst zu Problemen mit dem "normalen" Rand des Fensters
  423.   kommt.
  424.   Diese Funktion ist vor allem für die Verwendung unter Kickstart 1.3
  425.   vorgesehen. Unter Kickstart 2.0 sollte der normale Rand vorgezogen werden,
  426.   denn dieser bietet mehr Möglichkeiten (z.B. Systemgadgets).
  427.  
  428. EINGABEN
  429.   win   - Zeiger auf das Fenster, dessen Rand gezeichnet werden soll
  430.   title - Zeiger auf einen nullterminierten String mit dem Festertitel
  431.  
  432. ERGEBNISSE
  433.  
  434.  
  435.  
  436. multireq.library/DrawGadgetBorder              multireq.library/DrawGadgetBorder
  437.  
  438. NAME
  439.   DrawGadgetBorder -- zeichnet den Rand für die Anzahl der angegeben Fenster
  440.  
  441. SYNTAX
  442.   DrawGadgetBorder( gadgets, win, numgad )
  443.   -108              A0       A1   D0
  444.  
  445.   void DrawGadgetBorder( struct Gadget *, struct Window *, UWORD )
  446.  
  447. FUNKTION
  448.   Diese Funktion zeichnet für die angegebene Anzahl von Gadgets einen Rand, der
  449.   mittel des BORDER-Makros (siehe multireq.h) im UserData-Feld der Gadget-
  450.   Struktur definiert wurde.
  451.   Der Aufbau des Makros ist wie folgt:
  452.  
  453.   BORDER( type, col1, col2, fillcol )
  454.  
  455.   type - Art des Randes (siehe multireq.h)
  456.   col1, col2, fillcol - siehe DrawFilledBox
  457.  
  458.   Eine Liste der möglichen Randarten befindet sich in den jeweiligen Include-
  459.   files (multireq.h oder multireq.i).
  460.   Nach dem Zeichen des Randes kann es nötig sein das Gadget zu refreshen (mit
  461.   RefreshGadgets oder RefreshGList), da DrawGadgetBorder keinen Refresh
  462.   durchführt und somit eventuell andere Teile des Gadgets (wie z.B. Texte)
  463.   verdeckt.
  464.  
  465. EINGABEN
  466.   gadgets - Zeiger auf das erste Gadget einer verketteten Liste
  467.   win     - Zeiger auf das Fenster, das das Gadget enthält
  468.   numgad  - Anzahl der Gadgets, deren Rand gezeichnet werden soll
  469.  
  470. ERGEBNISSE
  471.  
  472.  
  473.  
  474. multireq.library/InitFileReq                        multireq.library/InitFileReq
  475.  
  476. NAME
  477.   InitFileReq -- initialisiert eine FileReq-Struktur
  478.  
  479. SYNTAX
  480.   InitFileReq( fr_ptr, numlist )
  481.   -114         A0      D0
  482.  
  483.   void InitFileReq( struct FileReq **, UWORD )
  484.  
  485. FUNKTION
  486.   Diese Funktion initialisiert eine FileReq-Struktur, dazu wird zuerst der
  487.   benötige Speicher reserviert und anschließend werden alle benötigten Daten des
  488.   FileRequesters gesetzt. Dannach wird der Zeiger auf die FileReq-Struktur in
  489.   die durch fr_ptr bestimmte Adresse geschrieben.
  490.   Die Option numlist wird in dieser Version nicht verwendet, sollte jedoch immer
  491.   auf 2 gesetzt sein, da sonst bei neueren Versionen der multireq.library
  492.   Probleme auftauchen könnten.
  493.  
  494. EINGABEN
  495.   fr_ptr  - Adresse eines Zeigers auf eine FileReq-Struktur
  496.   numlist - Anzahl der Verzeichnislisten (in dieser Version immer 2)
  497.  
  498. ERGEBNISSE
  499.  
  500. SIEHE AUCH
  501.   FreeFileReq, FileRequester
  502.  
  503.  
  504.  
  505. multireq.library/FreeFileReq                        multireq.library/FreeFileReq
  506.  
  507. NAME
  508.   FreeFileReq -- gibt eine zuvor initialisierte FileReq-Struktur wieder frei
  509.  
  510. SYNTAX
  511.   FreeFileReq( fr_ptr )
  512.   -120         A0
  513.  
  514.   void FreeFileReq( struct FileReq ** )
  515.  
  516. FUNKTION
  517.   Diese Funktion gibt eine eine durch InitFileReq erzeugt FileReq-Struktur,
  518.   sowie eventuell eingelesene Verzeichnisse wieder frei und löscht anschließend
  519.   den Zeiger auf die Struktur.
  520.   Diese Funktion sollte unbedingt aufgerufen werden, bevor eine Programm beendet
  521.   wird, da sonst der belegte Speicher nicht mehr freigegeben wird.
  522.  
  523. EINGABEN
  524.   fr_ptr  - Adresse eines Zeigers auf eine FileReq-Struktur
  525.  
  526. ERGEBNISSE
  527.  
  528. SIEHE AUCH
  529.   InitFileReq, FileRequester
  530.  
  531.  
  532.  
  533. multireq.library/FileRequester                    multireq.library/FileRequester
  534.  
  535. NAME
  536.   FileRequester -- startet den eigentlichen FileRequester
  537.  
  538. SYNTAX
  539.   status = FileRequester( filereq, screen )
  540.   D0       -126           A0       A1
  541.  
  542.   UWORD FileRequester( struct FileReq *, struct Screen * )
  543.  
  544. FUNKTION
  545.   Diese Funktion startet den FileRequester auf dem durch screen definierten
  546.   Screen (0 = WorkBench-Screen) und verwendet dazu die in der FileReq-Struktur
  547.   definieren Werte. Bei dem Screen muß es sich um einen Hires-Screen handeln, da
  548.   ein Lores-Screen aufgrund der geringen Breite zu klein für den FileRequester
  549.   ist.
  550.   Der FileRequester ist in dem File "FileReq.dok" ausführlich beschrieben.
  551.   Die Parameter der FileReq-Struktur sind in den Includefiles "multireq.i" und
  552.   "multireq.h" beschreiben.
  553.  
  554. EINGABEN
  555.   filereq - Zeiger auf eine FileReq-Struktur
  556.   screen  - Zeiger auf den Screen auf dem der FileRequester geöffnet werden soll
  557.  
  558. ERGEBNISSE
  559.   status - Enthält den Zustände mit der FileRequester beendet wurde. Dieser Wert
  560.            ist identisch mit dem ReturnStatus-Eintrag der FileReq-Struktur.
  561.            (Ein Liste der möglichen Zustände befindet sich ebenfalls in den
  562.            Includefiles.)
  563.  
  564. SIEHE AUCH
  565.   InitFileReq, FreeFileReq
  566.  
  567.  
  568.  
  569. Wenn Sie Probleme, Anregungen, Verbesserungsvorschläge oder der gleichen haben,
  570. dann schicken Sie diese bitte an mich:
  571.  
  572. Andreas Krebs
  573. Mittelweg 9
  574. 7110 Öhringen 2
  575. Germany
  576.  
  577. Tel.: 07948/2101  (am Wochenende und in den Semesterferien)
  578.       0721/821356 (sonst)
  579.  
  580. Oder per Email einfach an folgende Adresse.
  581.  
  582. Email: s_krebs@iravcl.ira.uka.de
  583.  
  584.